package ru.evga.billboard.graph.preference;

import java.awt.geom.Rectangle2D;
import java.util.HashMap;
import java.util.Map;

import ru.evga.billboard.common.JSON;
import ru.evga.billboard.common.JSONObject;

public class RectParam
    extends Param<Rectangle2D.Double>
{
    
    public RectParam(String key, Rectangle2D.Double defaultValue)
    {
        super(key, defaultValue);
    }

    public void fromString(String strValue)
    {
        if (strValue == null)
        {
            setValue(getDefaultValue());
        }
        else
        {
            try
            {
                Rectangle2D.Double r = new Rectangle2D.Double();
                Map<String, Object> map = (Map<String, Object>)JSON.parse(strValue);
                r.x = Double.parseDouble(map.get("x").toString());
                r.y = Double.parseDouble(map.get("y").toString());
                r.width = Double.parseDouble(map.get("w").toString());
                r.height = Double.parseDouble(map.get("h").toString());
                setValue(r);
            }
            catch (Exception e)
            {
                setValue(getDefaultValue());
            }
        }
    }

    public String toString()
    {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("x", getValue().x);
        map.put("y", getValue().y);
        map.put("w", getValue().width);
        map.put("h", getValue().height);
        return String.valueOf(JSON.toString(map));
    }
}
